package org.mat.sample.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.mat.sample.entity.LogisticsDispatch;
import java.util.List;

@Mapper
public interface LogisticsDispatchMapper {

    // 插入派送记录（包含乐观锁版本控制）
    int insertDispatch(LogisticsDispatch dispatch);

    // 根据订单号查询物流信息（FOR UPDATE 锁）
    LogisticsDispatch selectByOrderIdWithLock(String orderId);

    // 分页查询派送记录
    List<LogisticsDispatch> selectDispatchList(
            @Param("logisticsCompany") String logisticsCompany,
            @Param("status") String status,
            @Param("offset") int offset,
            @Param("pageSize") int pageSize);

    // 更新物流状态（包含版本校验）
    int updateDispatchStatus(
            @Param("dispatchId") Long dispatchId,
            @Param("newStatus") String newStatus,
            @Param("version") Integer version);
}